package com.g0dkar.leet.core.configuration.loaders;

import com.g0dkar.leet.core.Leet;
import com.g0dkar.leet.core.configuration.LeetConfiguration;

public interface LeetConfiguratorInterface {
	/**
	 * <p>
	 * This method is called when a {@link Leet} class is created (it is a Singleton). All of the
	 * {@link LeetConfigurator} annotated classes will be found and the {@link #configure()} method invoked. They
	 * may implement this class or simply contain a public method called <code>configure(LeetConfiguration)</code> which
	 * will be invoked as if it were a implementation of this interface.
	 * </p>
	 * 
	 * <p>
	 * This class can and should alter the {@link LeetConfiguration} object as needed to set up the application.
	 * </p>
	 * 
	 * @param configuration
	 *            - A {@link LeetConfiguration} instance used by the {@link Leet} class.
	 */
	public void configure(LeetConfiguration configuration);
}
